package com.vue.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vue.mapper.AdminMapper;
import com.vue.pojo.Admin;
import com.vue.service.IAdminService;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author
 * @since 2024-09-18
 */
@RestController
@RequestMapping("/admin")
public class AdminController {
    @Autowired
    private IAdminService adminService;
    @Autowired
    private AdminMapper adminMapper;

    //查询
    @PostMapping("/find/{id}")
    /**
     * 根据ID查询管理员信息
     *
     * @param id 管理员ID，路径变量
     * @return 返回查询到的管理员列表
     */
    public List<Admin> find(@PathVariable("id") Integer id) {
        // 创建Lambda查询构建器，用于构建查询条件
        LambdaQueryWrapper<Admin> adminLambdaQueryWrapper = new LambdaQueryWrapper<>();
        // 设置查询条件，管理员ID等于传入的ID
        adminLambdaQueryWrapper.eq(Admin::getId, id);
        // 使用Mapper的selectList方法根据查询条件获取管理员列表
        List<Admin> admins = adminMapper.selectList(adminLambdaQueryWrapper);
        // 打印管理员列表信息（注：生产环境中通常不建议直接打印对象信息）
        System.out.println(admins);
        // 返回查询结果
        return admins;
    }

    //查询所有
    @PostMapping("/findAll")
    public List<Admin> findAll() {
        List<Admin> admins = adminService.list();
        System.out.println(admins);
        return admins;
    }

    //添加
    @PostMapping("/add")
    public String add(@RequestBody Admin admin) {
        if (admin.getCreatetime() == null) {
            admin.setCreatetime(new Date());
        }
        if (admin.getUpdatetime() == null) {
            admin.setUpdatetime(new Date());
        }
        adminService.save(admin);
        return "添加成功";
    }

    //修改
    @PostMapping("/updateById/admin")
    public String updateById(@RequestBody Admin admin) {
        // 打印接收到的管理员对象信息，便于调试
        String string = admin.toString();
        System.out.println(string);
        // 创建查询包装器，用于指定根据ID更新管理员信息
        LambdaQueryWrapper<Admin> adminLambdaQueryWrapper = new LambdaQueryWrapper<>();
        adminLambdaQueryWrapper.eq(Admin::getId, admin.getId());
        // 如果更新对象中的更新时间未设置，则自动设置为当前时间
        if (admin.getUpdatetime() == null) {
            admin.setUpdatetime(new Date());
        }
        // 使用MyBatis Plus的更新方法，根据ID更新管理员信息
        adminMapper.update(admin, adminLambdaQueryWrapper);
        // 返回更新成功提示
        return "修改成功";
    }

    //删除
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable("id") Integer id) {
        adminService.removeById(id);
        return "删除成功";
    }

}
